
// std::shared_ptr<Response> ResponseMedia(HTTP* args){
//     std::shared_ptr<Response> resp(new Response(args->get_ReqHead()));
//     std::string buf("404");
//     // printf("url==:%s\n",args->get_ReqHead()->getUrl().c_str());
//     std::string dirs;

//     if(args->get_ReqHead()->getUrlParams().size()<=1){
//         // dirs=args->getUrlParams()[1];

//         resp->setText(buf);
//         resp->setStatus(404);
//         resp->setDescribe("ERR");
//         return resp;
//     }
//     dirs=args->get_ReqHead()->getUrlParams()[1];

//     int file_size;
//     if(Media.is_exist(dirs,file_size)<0){
//         resp->setText(buf);
//         resp->setStatus(404);
//         resp->setDescribe("ERR");
//     }else{
//         // for(auto t=args->get_ReqHead()->getHeaders().begin();t!=args->get_ReqHead()->getHeaders().end();t++){
//         //     std::cout<<t->first<<" "<<t->second<<std::endl;
//         // }
//         if(args->get_ReqHead()->getHeaders().find("Range")==args->get_ReqHead()->getHeaders().end()){
//             std::cout<<"no Range="<<args->get_ReqHead()->getUrl()<<std::endl;
//             resp->setStatus(200);
//             resp->setDescribe("succes");
//             std::string tpe;
//             tpe=dirs.substr(dirs.find_last_of('.') + 1);//获取文件后缀
//             resp->setMsg("Content-Type",media_types[tpe]);
//             resp->setMsg("Connection","keep-alive");
//             resp->setMsg("Transfer-Encoding","chunked");
//             resp->setMsg("Accept-Ranges","bytes");
            
//             if(tpe.compare("mp4")!=0){
//                 std::string value=resp->returnResponse();
//                 int r=write(args->client_fd,value.c_str(),value.size());
//                 std::string path=Media.get_filePath()+dirs;
//                 FILE *file=fopen(path.c_str(),"r");
//                 if(file==nullptr){
//                     printf("文件打开失败\n");
//                     resp->setClose(1);
//                     resp->setSend(1);
//                     return resp;
//                 }
//                 int read_len=0;
//                 char buf[2048];
//                 std::ostringstream ss;
//                 ss<<std::hex<<file_size<<"\r\n";
//                 std::string ttt=ss.str();
//                 int sum=0;
//                 write(args->client_fd,ttt.c_str(),ttt.size());
//                 std::cout<<"sum="<<sum<<" "<<read_len<<std::endl;
//                 while((read_len=fread(buf,sizeof(char),2048,file))!=0){
//                     sum+=read_len;
//                     write(args->client_fd,buf,read_len);
//                 }
//                 write(args->client_fd,"\r\n0\r\n\r\n",7);
//                 resp->setClose(1);
//                 resp->setSend(1);
//             }
//             return resp;
//         }
//         std::cout<<"have Range="<<args->get_ReqHead()->getUrl()<<std::endl;
//         resp->setStatus(206);
//         resp->setDescribe("Partial Content");
//         std::string tpe;
//         tpe=dirs.substr(dirs.find_last_of('.') + 1);//获取文件后缀
//         resp->setMsg("Content-Type",media_types[tpe]);
//         resp->setMsg("Connection","keep-alive");
//         resp->setMsg("Transfer-Encoding","chunked");
//         resp->setMsg("Accept-Ranges","bytes");
//         // resp->setMsg("Content-Ranges","bytes");
//         std::cout<< ((args->get_ReqHead()->getHeaders().find("Range"))!=(args->get_ReqHead()->getHeaders().end()))<<std::endl;
//         std::string Range=args->get_ReqHead()->getHeaders().at("Range");
//         int _a=Range.find_last_of("=");
//         int _b=Range.find_last_of("-");
//         std::string range_a=Range.substr(_a+1,_b-_a-1);
//         std::string range_b=Range.substr(_b+1);
//         int range_1=std::atoi(range_a.c_str());
//         int range_2=0;
//         if(range_b.empty()){
//             range_2=file_size;
//         }
//         if(range_1>file_size ){
//             resp->setText(buf);
//             resp->setStatus(416);
//             resp->setDescribe("ERR");
//             return resp;
//         }
//         std:: ostringstream ss;
//         ss<<"bytes "<<range_a<<"-"<<range_2<<"/"<<file_size;
//         std::cout<<ss.str()<<std::endl;
//         resp->setMsg("Content-Ranges",ss.str());
//         std::string value=resp->returnResponse();
//         int r=write(args->client_fd,value.c_str(),value.size());
//         printf("r=%d v=%ld\n",r,value.size());
//         std::string path=Media.get_filePath()+dirs;
//         std::cout<<path<<std::endl;
//         FILE *file=fopen(path.c_str(),"r");
//         if(file==NULL){
//             printf("文件打开失败\n");
//             resp->setClose(1);
//             resp->setSend(1);
//             return resp;
//         }
//         int read_len=0;
//         char buf[2048];
//         std::ostringstream sss;
//         sss<<std::hex<<range_2<<"\r\n";
//         std::string ttt=sss.str();
        
//         write(args->client_fd,ttt.c_str(),ttt.size());
//         if(range_1>=0){
//             fseek(file,range_1,SEEK_SET);
//         }else{
//             fseek(file,range_1,SEEK_END);
//         }
//         int sum=range_2;
//         std::cout<<"range_2="<<range_2<<std::endl;
//         // read_len=fread(buf,sizeof(char),2048,file);
//         // int w=write(args->client_fd,buf,read_len);
//         // read_len=fread(buf,sizeof(char),std::min(2048,sum),file);
//         // int w=write(args->client_fd,buf,read_len);
//         while(sum>0){
//             read_len=fread(buf,sizeof(char),std::min(2048,sum),file);
//             sum-=read_len;
//             int w=write(args->client_fd,buf,read_len);
//             // std::cout<<"read_len="<<read_len<<" write="<<w<<std::endl;
//             // std::cout<<"write="<<w<<std::endl;
//         }
//         // std::cout<<"readlen="<<read_len<<std::endl;
//         write(args->client_fd,"\r\n0\r\n\r\n",7);
//         resp->setClose(0);
//         resp->setSend(1);
//         // std::cout<<"发送完毕"<<std::endl;
//         return resp;
        
//     }

    
    
//     return resp;
// }
